package com.todo.strategy.offline.application.service;

import com.todo.common.common.entity.response.page.PageResult;
import com.todo.strategy.common.enums.StrategyStatusEnum;
import com.todo.strategy.offline.application.entity.bo.PlatformStrategyBO;
import com.todo.strategy.offline.application.entity.bo.PlatformStrategyDetailBO;
import com.todo.strategy.offline.application.entity.bo.PlatformStrategyExtendBO;
import com.todo.strategy.offline.application.entity.condition.PlatformStrategyConditionBO;

import java.util.List;

/**
 * (PlatformStrategy)表服务接口
 *
 * @author zhangwenxiang
 * @since 2024-03-04 00:19:47
 */
public interface PlatformStrategyService {

    /**
     * 新增平台攻略信息
     *
     * @param platformStrategyBO
     * @return
     */
    Boolean insertPlatformStrategyInfo(PlatformStrategyBO platformStrategyBO);

    /**
     * 新增平台攻略扩展信息
     *
     * @param platformStrategyBO
     * @return
     */
    Boolean insertPlatformStrategyExtend(PlatformStrategyExtendBO platformStrategyBO);

    /**
     * 更新平台攻略信息
     *
     * @param platformStrategyBO
     * @return
     */
    Boolean updatePlatformStrategyInfo(PlatformStrategyBO platformStrategyBO);


    //todo 后续更新数量的同步任务，es只更新数量信息

    /**
     * 更新平台攻略扩展信息
     *
     * @param platformStrategyBO
     * @return
     */
    Boolean updatePlatformStrategyExtend(PlatformStrategyExtendBO platformStrategyBO);

    /**
     * 根据主键查询平台攻略信息
     *
     * @param strategyId
     * @return
     */
    PlatformStrategyBO queryPlatformStrategyInfoById(Long strategyId);

    /**
     * 根据主键查询平台攻略扩展信息
     *
     * @param strategyId
     * @return
     */
    PlatformStrategyExtendBO queryPlatformStrategyExtendById(Long strategyId);

    /**
     * 根据主键删除平台攻略
     *
     * @param strategyId
     * @return
     */
    Boolean removePlatformStrategyInfoById(Long strategyId);

    /**
     * 根据主键查询平台攻略详情
     *
     * @param strategyId
     * @return
     */
    PlatformStrategyDetailBO queryPlatformStrategyDetailById(Long strategyId);

    /**
     * 多条件查询平台攻略信息
     *
     * @param platformStrategyConditionBO
     * @return
     */
    PageResult<PlatformStrategyBO> queryPlatformStrategyByCondition(PlatformStrategyConditionBO platformStrategyConditionBO);

    /**
     * 根据主键集合查询平台攻略信息
     *
     * @param strategyIdList
     * @return
     */
    List<PlatformStrategyBO> queryPlatformStrategyInfoByIdList(List<Long> strategyIdList);

    /**
     * 更新平台攻略状态
     *
     * @param strategyId
     * @param statusEnum
     * @return
     */
    Boolean updatePlatformStrategyStatus(Long strategyId, StrategyStatusEnum statusEnum);
}
